package com.sanploy.manage.mapper;


import com.sanploy.common.domain.Message;
import com.sanploy.common.domain.dto.MessageDto;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Created by zhu yingzhi on 2017/9/8.
 * @author yingzhi zhu
 * 消息数据库操作接口
 */
@Mapper
public interface MessageMapper {

    /**
     * 获取所有的消息
     * @param start 开始条目
     * @param pageSize 每页条目数
     * @param isRead 消息是否读过
     * @return 消息实体 集合
     */
    @Select("SELECT * FROM message WHERE is_read=#{is_read} ORDER BY add_time DESC LiMIT #{start},#{pageSize}")
    List<Message> getAllMessage(@Param("start") int start, @Param("pageSize") int pageSize, @Param("is_read") boolean isRead);

    /**
     * 获取所有的消息数量
     * @param isRead 消息是否读过
     * @return 数据库影响行数
     */
    @Select("SELECT COUNT(*) FROM message WHERE is_read=#{is_read}")
    int findMessageCount(@Param("is_read") boolean isRead);

    /**
     * 添加消息
     * @param message 消息DTO
     * @return 数据库影响行数
     */
    @Insert("INSERT INTO message (is_read,message,add_time,message_type,sender)" +
            " VALUES" +
            " (#{is_read},#{message},#{add_time},#{message_type},#{sender})")
    int addMessage(MessageDto message);

    /**
     * 添加消息
     * @param message 消息实体
     * @return 数据库影响行数
     */
    @Insert("INSERT INTO message (message,add_time,message_type,sender)" +
            " VALUES" +
            " (#{message},#{add_time},#{message_type},#{sender})")
    int addMessages(Message message);

    /**
     * 通过id查找消息
     * @param id 消息id
     * @return 消息实体
     */
    @Select("SELECT * FROM message WHERE id=#{id}")
    Message findById(@Param("id") Long id);
//
//    @Delete("DELETE ")
//    int deleteById(@Param("id") Long id);

    /**
     * 批量设置消息为未读或以读
     * @param idArr 消息id 数组
     * @return 数据库营销行数
     */
    int setIsReadMsg(@Param("id_arr") String[] idArr);

}
